package string;

/**
 * @desc BM(Boyer-Moore)算法是当前有效且应用比较广的一中算法，各种文本编辑器的“查找”功能（Ctrl+F）， 大多采用Boyer-Moore算法。
 *       比我们在学习的KMP算法快3~5倍。
 * @author hongxingfan
 * @since 2015年1月20日 下午1:35:32
 * @major BM算法在移动模式串的时候是从左到右，而进行比较的时候是从右到左的。 后移位数 = 坏字符的位置 - 搜索词中的上一次出现位置
 * @参考 
 */
public class BoyerMoore {
	public static void main(String[] args) {
		String txt = "hongxingfanwenxiubilihuaheguixiangxue";
		String pattern = "heguixiang";
		int txt_length = txt.length();
		int p_length = pattern.length();
		int pre = 0;
		int tt = 0;
		for (int p = p_length - 1, t = p; t < txt_length && p > -1;) {
			if (txt.charAt(t) == pattern.charAt(p)) {
				p--;
				t--;
			} else {
				continue;
			}
			tt = t;
		}
		System.out.println(tt);
	}
}
